System and method for report to report generation

ABSTRACT

In an example embodiment a sender report containing multiple rows and/or columns of information drawn from a data table may be displayed to a user of a machine. A user may select a portion of the displayed information. A sender adaptor may extract report-to-report selection criteria from the selected information. A receiver adaptor may identify other data tables where information related to the report-to-report selection criteria resides. If such information resides in multiple data tables, the receiver adaptor may join the multiple data tables into one or more data tables. The receiver adaptor may convert the report-to-report selection criteria into selection criteria for the identified data table(s) or joined data table(s). The selection criteria may be passed to a generic receiver report adapted to retrieve any information from any data table(s). The generic receiver report may retrieve information according to the selection criteria and display the information to the user.

TECHNICAL FIELD

This disclosure relates to information storage and retrieval, such as bydatabases. More particularly, this disclosure relates to displaying areport to a user and allowing the user to select information from thedisplayed report that is subsequently used to create selection criteriafor other data tables within databases associated with a system.

BACKGROUND

Report-to-report functionality may be used to connect reports within asystem. This functionality, however, requires custom tailored sender andreceiver reports to make sure that they “fit together” in theirdefinition, selection criteria and database tables. No general wayexists that allows general information from one report to be used toselect information that may reside in other places in the system.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a diagram illustrating a representative report-to-reportconnection.

FIG. 2 is a representative flow diagram to provide a generalreport-to-report connection.

FIG. 3 is a diagram illustrating a representative architecture toprovide a general report-to-report connection.

FIG. 4 is a diagram illustrating information selection from a report andselection criteria derived from the selected information.

FIG. 5 illustrates use of an in-memory database in one of twoconfigurations in conjunction with the methodologies discussed herein.

FIG. 6 is a block diagram of a computer processing system, within whicha set of instructions for causing the computer to perform any one ormore of the methodologies discussed herein may be executed.

DETAILED DESCRIPTION

The description that follows includes illustrative systems, methods,techniques, instruction sequences, and computing machine programproducts of illustrative embodiments. In the following description, forpurposes of explanation, numerous specific details are set forth inorder to provide an understanding of various embodiments of theinventive subject matter. It will be evident, however, to those skilledin the art, that embodiments of the inventive subject matter may bepracticed without these specific details. In general, well-knowninstruction instances, protocols, structures, and techniques have notbeen shown in detail.

FIG. 1 illustrates a representative report-to-report connectiongenerally as 100. Enterprise Resource Planning (ERP) systems or otherlines of business applications typically utilize data tables (alsocalled database tables) stored in one or more databases. In thisdisclosure, data tables, database tables, and tables may be usedinterchangeably. Representative data tables are illustrated as 102, 104,106, and 108. Data tables typically comprise a plurality of rows andcolumns. Columns generally contain different data fields while rowsgenerally contain values for the various data fields. Data tables mayhave relationships that relate records (rows) of one table to records(rows) of other tables. For example, one table may contain employees(first name, last name) and another may contain job titles and stillanother may contain facility names and locations. An employee may berelated to a job title and a facility name and location. Relationshipsmay also occur where one table contains “detail” and a related tablecontains higher-level “summary” information.

In FIG. 1, data tables 102 and 106 are related to data table 104 anddata table 104 is related to data table 108. Relationships may beone-to-one, one-to-many, or many-to-many. Data from a table (or frommultiple tables) may be selected and placed into a report for viewing orother purposes. In FIG. 1, data from data table 108 is selected andpresented in report 110. As an example, report 110 may comprise theinformation in table 112, which includes a summary of various corporatecosts such as personnel costs, salaries and travel costs.

According to the present disclosure, a user may select all or a portionof the displayed information and use that to display a second report ofinformation related to the selected information. The selectedinformation 114 may be used as discussed more fully below to locate theappropriate table or tables where related information resides.Appropriate selection criteria may then be created for the identifiedtables. The selection criteria may then be used to extract the desiredinformation into a report 110.

In the Example of FIG. 1, the selected information 114 comprises thesalaries row. Data table 106 contains the detail information for theselected salary row. Appropriate select criteria may be used to extractthe desired information from data table 106 into report 116. In thisexample, report 116 contains the information in table 118, whichincludes the salary breakdown showing salaries from the US, Europe andAsia.

Thus, in an example embodiment a method may comprise receiving aselection of information from a report 110 generated from a first datatable and displayed on a display device of the machine. The system maythen identify any additional data tables where information related tothe selection reside. Selection criteria based on the additional datatables may be created. A generic report adapted to select anyinformation from any data table may then use the selection criteria toretrieve the information from the additional data tables. The report 116may then be displayed.

FIG. 2 is a representative flow diagram to provide a generalreport-to-report connection. The representative embodiment may comprisea sender report 200, a sender adaptor 202, a receiver adaptor 204 and areceiver report 206. The sender report 200 may receive report criteriathat define what information should be selected and displayed in thesender report 200. The operation 208 illustrates receiving the reportcriteria. The report criteria may be entered by a user via a machineadapted to display an appropriate user interface or may be received fromanother entity such as another system, program, service, etc.

The sender report 200 may be created and/or displayed on a displaydevice of a machine adapted to not only create/display the reportinformation (e.g., operation 210) but also to receive a selection ofsome or all of the displayed information (e.g., operation 212) from, forexample, a user. Once a user selects information on the sender report200 and indicates a desire to establish a report-to-report link, theselection indicating the selected information is received as indicatedby operation 212. Sender report 200 may then send the selection to thesender adaptor 202 as indicated by operation 214.

The sender adaptor 202 receives the selection as indicated in operation216. The sender adaptor 202 may know the report criteria used togenerate the sender report 200. These report criteria may be in the formof a read or select statement to retrieve the data used to create thesender report 200. The sender adaptor 202 may also know any conditionsassociated with the sender report 200 and the columns that aredisplayed. Thus, the sender adaptor 202 may extract report-to-reportselection criteria from the received selection as indicated by operation218. Report-to-report selection criteria may include any informationneeded by receiver adaptor 204 to identify appropriate data tables whererelevant information resides. For example, in some embodiments, a datadictionary or other entity may contain information about the tablerelationships and may pass the information as part of thereport-to-report selection criteria. In some embodiments, extractingreport-to-report selection criteria may comprise taking the informationin the selection such as what columns and/or rows were selected,identifying the data fields and/or data values in the columns and/orrows and placing the information in an appropriate format. Once thereport-to-report selection criteria have been extracted (operation 218),it is sent to, or placed in, an appropriate location as indicated byoperation 220. In the embodiment of FIG. 2 the information is sent tothe receiver adaptor 204. In alternative embodiments, the informationmay be sent to a report-to-report adaptor, such as report-to-reportadaptor 318 of FIG. 3. In still other embodiments, the information maybe placed in a data store or other location for retrieval.

The receiver adaptor 204 obtains the report-to-report selection criteriain operation 222. At a minimum, report-to-report selection criteria mayinclude information to allow the report-to-report adaptor to identifythe data fields and/or values that have been selected. From thisinformation, the receiver adaptor 204 may identify the data tables thathave related information as indicated by operation 224. By way ofexample, and not limitation, related information may include informationthat supports and/or corresponds to the selected information (such assupporting detail for summarized and/or aggregated data, controllingdocuments for selected data, master data display, line items forspecific selection criteria, and so forth), contains the selectedinformation (such as value(s) and/or text string(s), and so forth),and/or some combination thereof. Related information may be identified,for example, based on report and/or data table relationships. By way ofexample, and not limitation, some underlying ERP and/or other lines ofbusiness systems may use a data dictionary that contains datadefinitions and/or other metadata about the data in the system.Information such as data tables, views on data tables, dataelements/types, structure components, domains (e.g., technicalcharacteristics of table field(s) and structure component(s)), and soforth may be stored in such a data dictionary. A data dictionary may beone source of information to identify where related information resides.Relationships between tables (whether or not they are stored in the datadictionary) may also be a source of information to identify whererelated information resides.

Operation 224 may include two fundamental operations: 1) identify whatrelated information exists; and 2) identify the data table(s) where therelated information is located. To identify what related informationexists, the receiver adaptor 204 may examine relationships between theselected data fields and/or values. For example, if the selectedinformation is an aggregation of all cost centers per controlling area,the sources of the aggregated data may be identified (for example bysearching the data dictionary, table relationships, initial senderreport information, etc.). To identify where the related information islocated (e.g., which data tables, structures, and so forth contain theinformation), the receiver adaptor 204 may perform a similar evaluation.

In some embodiments, the initial report selection (e.g., operation 212)may include multiple fields and/or values. Such a selection may resultin related information residing in multiple tables, perhaps stored inmultiple databases across the system. In such a situation, databaseoperations such as various types of joinder operations may be performedon the multiple tables so that related information is brought togetherin an appropriate format. An example of this is discussed below inconjunction with FIG. 4.

Depending on various factors such as where related information resides,whether related information resides in multiple tables, and/or whetherdatabase operations were performed on the data tables, thereport-to-report selection criteria may need to be modified. Operation226 illustrates any modification to the report-to-report needed toextract the related information from the appropriate location(s). Theresultant selection criteria may be in the form of one or more selectstatements to be executed or may include the information from which suchselect statement(s) may be created.

Operation 228 sends the selection criteria (the report-to-reportselection criteria and/or a version modified by operation 226).

The receiver report 206 obtains the selection criteria in operation 230,retrieves the related data in operation 232 and may create and/ordisplay the receiver report 206 in operation 234.

As an example of how this might work in an illustrative embodiment,suppose sender report 200 uses a main table (Table A) and displays anaggregated activity report. A user selects a line from the report asshown in operation 212. The sender adaptor 202 may receive the selectioncriteria (e.g., the selected line) in operation 216 and extracts theinformation in operation 218 from the report and sends it to thereceiver adaptor 204 (operations 220 and 222). The receiver adaptor 204uses the received selection criteria and relationship information in adata dictionary to identify a table containing detail information (TableB) in operation 224. The receiver adaptor 204 then converts the receivedselection criteria to fields to be selected from Table B in operation226. This is then sent to the receiver report 206 in operations 228 and230. Data is retrieved (operation 232) and displayed (operation 234).

FIG. 3 is a diagram illustrating a representative architecture toprovide a general report-to-report connection. The architecture, showngenerally as 300 may comprise a sender report 302. The sender report 302may be a generic data report that is able to read any data from any datatable or combination of data tables. In such embodiments the senderreport 302 may be a sort of generic data browser or a more traditionalreport associated with a database (or multiple databases) that mayretrieve data meeting any selection criteria. In other embodiments, thesender report 302 may be limited such that the range of applicableselection criteria is more circumscribed. When a generic report is used,the sender report 302 may receive any report criteria 304 and read datafrom any data table as illustrated by the data table A 306. If a morerestricted report is used, the sender report 302 may receive reportcriteria 304 consistent with the design of the sender report 302 and thedata retrieved (e.g., information from data table A 306) is consistentwith report criteria 304.

The information in the sender report 302 may be displayed as indicatedby operation 308. Displaying the information may be performed using amachine that not only allows display of information, but also allowsreceipt of input from a user or other entity. In the report-to-reportscenario of FIG. 3, a user may select a portion or all of the displayeddata and indicate that a second report should be generated based on datarelated to the selection. Operation 310 represents this process (e.g.,selection of all or part of the displayed data and indicating that areport of related data should be generated).

The sender adaptor 312 may be associated with the sender report 302. Thesender adaptor 312 includes functionality that extracts and/or convertsthe selection to appropriate report-to-report selection criteria. Thesender adaptor 312 may thus be a component or module associated withsender report 302. Alternatively, the functionality provided by thesender adaptor 312 may be incorporated into the logic of the senderreport 302. The form of the selection 310 as it comes to the senderadaptor 312 may be a select statement, other selection criteria,information from which a select statement could be derived, the rawselected data (e.g., the rows and/or columns selected), or combinationsthereof. Depending on the exact form of the selection 310 as it arrivesto the sender adaptor 312, the sender adaptor 312 may be able to justextract the appropriate report-to-report selection criteria, or thesender adaptor 312 may need to create the appropriate report-to-reportselection criteria. For example, if the selection includes a row withinthe sender report 302 that contains an aggregation of controllingdocuments for a particular cost center, then the sender adaptor 312 mayidentify the appropriate data fields and/or values that would identifythe selection of that information. In this example, perhaps thatincludes the cost center, a geographic region, and so forth. Theresultant report-to-report selection criteria may include these items(e.g., cost center, geographic region, and so forth). Thus,report-to-report selection criteria may include any information neededby the receiver adaptor 322 to identify appropriate data tables whererelevant information resides. In some embodiments, extractingreport-to-report selection criteria may comprise taking the informationin the selection such as what columns and/or rows were selected,identifying the data fields and/or data values in the columns and/orrows and placing the information in an appropriate format.

Once the report-to-report selection criteria have beencreated/extracted, it is sent to, or placed in, an appropriate locationas indicated by arrow 314. In the embodiment of FIG. 3 thereport-to-report selection criteria may be sent to the report-to-reportadaptor 318. In one embodiment, report-to-report adaptor 318 includesfunctionality that stores the received report-to-report selectioncriteria and then provides the stored report-to-report selectioncriteria 320 to the receiver adaptor 322.

As illustrated in FIG. 3, the report-to-report adaptor 318 may beassociated with a report-to-report module 316. The report-to-reportmodule 316 may provide the report-to-report framework to coordinate allthe various functionality in FIG. 3. For example, report-to-reportmodule 316 may provide a unified interface between any kind of senderreport and any kind of receiver report. In addition, thereport-to-report module may call additional tools/functionality toperform additional processing on the selection criteria 314 before beingsent to receiver adaptor 322. In a multi-system environment thereport-to report module 316 may also use a remote function call or otherremote functionality to hand over the selection criteria to anothersystem. The report-to-report module 316 may also create a new screen todisplay the receiver report instead of using the current screen of thesender report. Finally, report-to-report module 316 may identify (or aska user to identify) which receiver report should be used is multipleappropriate receiver reports may fit a particular sender report and/orselection criteria. For example, a user selects aggregated data for acost center. The report-to-report module 316 (and/or receiver adaptor322) additionally identifies a cost element that is related the selecteddata. If two master data reports exist, one for master cost element dataand one for master cost center data, the report-to-report module 316 mayidentify which should be called. These represent only examples offunctionality that may be provided and not all embodiments have all, oreven any, of this functionality.

The receiver adaptor 322 includes functionality to identify informationrelated to the selection 310 from the report-to-report selectioncriteria 320, to identify where the related information resides, and tomodify and/or create selection criteria that allows retrieval of therelated information.

The receiver adaptor 322 obtains the report-to-report selection criteria320 as illustrated. The report-to-report selection criteria 320 mayinclude information to identify the data fields and/or values that havebeen selected (e.g., selection 310). From this information, the receiveradaptor 322 may identify the data tables that have related information.By way of example, and not limitation, related information may includeinformation that supports and/or corresponds to the selected information(such as supporting detail for summarized and/or aggregated data,controlling documents for selected data, master data display, line itemsfor specific selection criteria, and so forth), contains the selectedinformation (such as value(s) and/or text string(s), and so forth),and/or some combination thereof. Related information may be identified,for example, based on report and/or data table relationships. By way ofexample, and not limitation, some underlying ERP and/or other line ofbusiness systems may use a data dictionary that contains datadefinitions and/or other metadata about the data in the system.Information such as data tables, views on data tables, dataelements/types, structure components, domains (e.g., technicalcharacteristics of table field(s) and structure component(s)), and soforth may be stored in such a data dictionary. A data dictionary may beone source of information to identify where related information resides.Relationships between tables (whether or not they are stored in the datadictionary) may also be a source of information to identify whererelated information resides.

To identify what related information exists, the receiver adaptor 322may examine relationships to the selected data fields and/or values. Forexample, if the selected information is an aggregation of all costcenters per controlling area, the sources of the aggregated data may beidentified (for example by searching the data dictionary, tablerelationships, initial sender report information, etc.). To identifywhere the related information is located (e.g., which data tables,structures, and so forth contain the information), the receiver adaptor322 may perform a similar evaluation. Sometimes these two evaluations(e.g., identifying what related information exists and the location ofthe related information) may occur at the same time (e.g., identifyingwhat information exists yields the storage locations). Other times twoseparate inquiries may be used.

Different embodiments may have various ways of identifyingrelationships. By way of example, and not limitation, business logic maybe defined which relate tables to each other from a business perspective(e.g., total tables to line item tables). In another example, a datadictionary may store table definitions (as previously described) so thatrelationships may be identified via the data dictionary. In yet afurther example, different applications may have relationships betweenthem. Such relationships may indicate relationships between tables orother documents used by the different applications. Thus, tables used byone application may have counterpart tables used by another, relatedapplication.

The initial report selection (e.g., selection 310) may include multiplefields and/or values. Such a selection may result in related informationresiding in multiple tables, perhaps stored in multiple databases acrossthe system. In such a situation, database operations such as varioustypes of joinder operations may be performed on the multiple tables sothat related information is brought together in an appropriate format.An example of this is discussed below in conjunction with FIG. 4.

Depending on various factors such as where related information resides,whether related information resides in multiple tables, and/or whetherdatabase operations were performed on the data tables, thereport-to-report selection criteria 314 may need to be modified. Thereceiver adaptor 322 includes functionality to make any modification tothe report-to-report needed to extract the related information from theappropriate location(s). Such modification may include, for example,constructing one or more database operations such as select statementsand/or join statements in order to create selection criteria that may beutilized by receiver report 324 to extract the desired report-to-reportinformation. The selection criteria used by receiver report 324 toretrieve the desired information may take the form of one or moredatabase operations such as select statements, or may be informationfrom which such database operations may be constructed.

The receiver adaptor 322 may pass the appropriate selection criteria toreceiver report 324, and receiver report 324 may retrieve the desiredinformation, such as table B 326 and, if desired, display theinformation as illustrated by operation 328.

To summarize FIG. 3, a sender report 302 containing multiple rows and/orcolumns of information drawn from a data table 306 may be displayed to auser of a machine. A user may select all or a portion of the displayedinformation. A sender adaptor 312 may extract report-to-report selectioncriteria 314 from the selected information. A receiver adaptor 322 mayidentify other data tables 326 where information related to thereport-to-report selection criteria 320 resides. If such informationresides in multiple data tables, the receiver adaptor 322 may join themultiple data tables into one or more data tables. The receiver adaptor322 may convert the report-to-report selection criteria 320 intoselection criteria for the identified data table(s) and/or joined datatable(s). The selection criteria may be passed to a generic receiverreport 324 adapted to retrieve any information from any data table(s).The generic receiver report 324 may retrieve information according tothe selection criteria and display the information 328 to the user.

FIG. 4 is a diagram illustrating information selection from a report andselection criteria derived from the selected information. This example,shown generally as 400, illustrates how multiple columns in a selectionmay lead to database operations like a join operation. In this example,the sender report 402 is displayed to a user and a user selects aportion of the displayed data 404. The table 406 shows an enlargedversion of the selected region where three columns and two rows areselected. The first selected column contains data value 1A and datavalue 1B. The second selected column contains data value 2A and datavalue 2B and the third column contains text value A and text value B.

The information in the table 406 may be converted into report-to-reportselection criteria 408 as previously described. Report-to-reportselection criteria 408 may describe the related data that should belocated. In this example, the related data is all supporting recordsthat contain data value 1A, data value 1B, data value 2A, data value 2B,text value A or text value B.

Operation 410 illustrates the process of locating the relatedinformation. In this example, assume the related data of data value 1Aand data value 1B exist in table 412, the related data of data value 2Aand data value 2B exist in table 414 and the related data of text valueA and text value B exist in table 416. In such a situation, tables 412and 414 may be joined along the appropriate field to produce table 418.The text table 416 may then be joined along an appropriate field totable 418 to produce table 420. Table 420 now contains the appropriaterelated information as shown in the enlarged view 424. In the enlargedview 424, the ellipses 426 illustrate that any number of additionalcolumns that may be added to the table 420 as part of the joinoperations.

The selection criteria 408 may then be modified into an appropriatedetailed select statement 422 to select the related information fromtable 420.

FIG. 5 illustrates use of an in-memory database in one of twoconfigurations (shown generally as 500) in conjunction with themethodologies discussed herein. The use of generic reports that mayselect data from any column of any data table may be facilitated by theuse of an in-memory database that can select any column in a databasetable without the need for a specific index. Also, systems may have verylarge tables with thousands, tens of thousands or hundreds of thousandsof entries, implementations that use database systems to handle thetables and implement the described methods may benefit from in-memorydatabase technology. One example of a suitable in-memory database is theHANA in-memory database system available from SAP AG of Walldorf,Germany In-memory database systems do not necessarily always maintainall data within memory at all times, but the relevant data is in memorywhen it needs to be and many-fold improvements are seen using thesesystems over traditional disk based systems.

Like the HANA in-memory database system, the system of FIG. 5illustrates two separate deployments, a side-by-side deployment wherethe in-memory database is deployed in conjunction with a traditionaldisk based database system and a stand-alone deployment where thein-memory database system is deployed without a traditional disk baseddatabase system. Thus not every component illustrated in FIG. 5 may beprovided for every specific embodiment.

The embodiment of FIG. 5 may represent a side-by-side deployment wherean in-memory database is deployed alongside a standard databasemanagement system. This may have several benefits, includingacceleration of data read and/or writes. A side-by-side type ofdeployment may also allow acceleration without substantial changes inthe existing deployment infrastructure or technologies. In one type ofside-by-side deployment, reads and/or writes that would normally bedirected to the traditional database are handled by the in-memorydatabase instead. The in-memory database may interact with databasemanagement system 516 and/or database 518.

Such a side-by-side deployment may include presentation layer 502,application layer 504, database management system 516, database 518 andin-memory database system 534, possibly deployed in either the sameapplication layer (e.g., 504) or a different application layer (e.g.,522). An application layer 504, 522 may comprise presentation components(e.g., 506, 524). Presentation components may include components such asscreen interpreter(s), interfaces, dialog control, etc. An applicationlayer 504, 522 may also comprise kernel and services (e.g., 514, 532).Kernel and services may include components such as an interpreter and/orother components that implement the runtime environment. An applicationlayer 504, 522 may also comprise tools (e.g., 508, 526) and/orapplications (e.g., 512, 530). An application layer 504, 522 may alsocomprise a data dictionary (e.g., 510, 528) to provide information, datastructures, definitions, etc. in a database independent format. Thesedata dictionaries may include information used by various embodiments aspreviously described.

FIG. 5 may also illustrate a stand-alone deployment where an in-memorydatabase runs in the application layer 522 along with any applications530 and/or tools 526. In this type of deployment, presentation layer 520supports application layer 522. In-memory database system 534 providesthe database support. The other components (e.g., presentation layer502, application layer 504, database management system 516 and database518) do not exist in a stand-alone deployment.

FIG. 6 is a block diagram of a computer processing system 600, withinwhich a set of instructions 624 for causing the computer to perform anyone or more of the methodologies discussed herein may be executed.

As will be appreciated by one skilled in the art, aspects of the presentdisclosure may be illustrated and described herein in any of a number ofpatentable classes or context including any new and useful process,machine, manufacture, or composition of matter, or any new and usefulimprovement thereof. Accordingly, aspects of the present disclosure maybe implemented entirely in hardware, entirely in software (includingfirmware, resident software, micro-code, etc.) or combining software andhardware implementations that may all generally be referred to herein asa “circuit,” “module,” “component,” or “system.” Furthermore, aspects ofthe present disclosure may take the form of a computer program productembodied in one or more computer readable media having computer readableprogram code embodied thereon.

In addition to being sold or licensed via traditional channels,embodiments may also, for example, be deployed by software-as-a-service(SaaS), application service provider (ASP), or utility computingproviders. The computer may be a server computer, a personal computer(PC), a tablet PC, a set-top box (STB), a personal digital assistant(PDA), cellular telephone, or any processing device capable of executinga set of instructions 624 (sequential or otherwise) that specify actionsto be taken by that device. Further, while only a single computer isillustrated, the term “computer” shall also be taken to include anycollection of computers that individually or jointly execute a set (ormultiple sets) of instructions 624 to perform any one or more of themethodologies discussed herein.

The example computer processing system 600 includes a processor 602(e.g., a central processing unit (CPU), a graphics processing unit(GPU), advanced processing unit (APU) or some combination thereof), amain memory 604 and static memory 606, which may communicate with eachother via a bus 608. The computer processing system 600 may furtherinclude a graphics display 610 (e.g., a plasma display, a liquid crystaldisplay (LCD) or a cathode ray tube (CRT) or other display). Theprocessing system 600 may also include an alphanumeric input device 612(e.g., a keyboard), a user interface (UI) navigation device 614 (e.g., amouse, touch screen, or the like), a storage unit 616, a signalgeneration device 628 (e.g., a speaker), and/or a network interfacedevice 620.

The storage unit 616 includes a machine-readable medium 622 on which isstored one or more sets of data structures and instructions 624 (e.g.,software) embodying or utilized by any one or more of the methodologiesor functions described herein. The instructions 624 may also reside,completely or at least partially, within the main memory 604 and/orwithin the processor 602 during execution thereof by the computerprocessing system 600, with the main memory 604 and the processor 602also constituting computer-readable, tangible media.

The instructions 624 may be transmitted or received over a network 626via a network interface device 620 utilizing any one of a number ofwell-known transfer protocols (e.g., HTTP).

While the machine-readable medium 622 is shown in an example embodimentto be a single medium, the term “machine-readable medium” should betaken to include a single medium or multiple media (e.g., a centralizedor distributed database, and/or associated caches and servers) thatstore the one or more sets of instructions 624. The term“machine-readable medium” shall also be taken to include any medium thatis capable of storing, encoding or carrying a set of instructions 624for execution by the computer and that cause the computer to perform anyone or more of the methodologies of the present application, or that iscapable of storing, encoding or carrying data structures utilized by orassociated with such a set of instructions 624. The term“machine-readable medium” shall accordingly be taken to include, but notbe limited to, solid-state memories, and optical and magnetic media. Theterm “machine-readable storage medium” does not include signals or otherintangible mechanisms. Such intangible media will be referred to as“machine-readable signal media.” The term “machine-readable media” willencompass both “machine-readable storage media” and “machine-readablesignal media.”

While various implementations and exploitations are described, it willbe understood that these embodiments are illustrative and that the scopeof the claims is not limited to them. In general, techniques formaintaining consistency between data structures may be implemented withfacilities consistent with any hardware system or hardware systemsdefined herein. Many variations, modifications, additions, andimprovements are possible.

While the embodiments are described with reference to variousimplementations and exploitations, it will be understood that theseembodiments are illustrative, and that the scope of claims providedbelow is not limited to the embodiments described herein. In general,the techniques described herein may be implemented with facilitiesconsistent with any hardware system or hardware systems defined herein.Many variations, modifications, additions, and improvements arepossible.

The term “computer readable medium” is used generally to refer to mediaembodied as non-transitory subject matter, such as main memory,secondary memory, removable storage, hard disks, flash memory, diskdrive memory, CD-ROM and other forms of persistent memory. It should benoted that program storage devices, as may be used to describe storagedevices containing executable computer code for operating variousmethods, should not be construed to cover transitory subject matter,such as carrier waves or signals. “Program storage devices” and“computer-readable medium” are terms used generally to refer to mediasuch as main memory, secondary memory, removable storage disks, harddisk drives, and other tangible storage devices or components.

Plural instances may be provided for components, modules, operations, orstructures described herein as a single instance. Finally, boundariesbetween various components, modules, operations, and data stores aresomewhat arbitrary, and particular operations are illustrated in thecontext of specific illustrative configurations. Other allocations offunctionality are envisioned and may fall within the scope of theclaims. In general, structures and functionality presented as separatecomponents in the exemplary configurations may be implemented as acombined structure, module, or component. Similarly, structures andfunctionality presented as a single module or component may beimplemented as separate modules or components. These and othervariations, modifications, additions, and improvements fall within thescope of the claims and their equivalents.

What is claimed is:
 1. A method comprising: receiving from a sender report, using a processor of a machine, a selection of some or all information from the sender report, the sender report generated from a first data table and displayed on a display device of the machine; creating, based on the selection, a selection criteria that identifies at least one additional data table where information related to the selection resides; sending the selection criteria to a receiver report adapted to receive selection criteria and adapted to select information from a data table; and selecting information from the at least one additional data table based on the selection criteria.
 2. The method of claim 1 wherein the at least one additional data table resides in a database separate from the first data table.
 3. The method of claim 1 wherein the selection comprises a plurality of information contained in rows and/or columns of the sender report and wherein the creating operation produces information to identify the information contained in the rows and/or columns of the sender report.
 4. The method of claim 3, further comprising creating database operations to join multiple additional data tables before selecting information based on the selection criteria.
 5. The method of claim 4, wherein the multiple additional data tables reside in a database separate from the first data table.
 6. The method of claim 3, wherein the selection criteria comprises multiple selection criteria.
 7. The method of claim 1 wherein creating the selection criteria comprises: identifying data fields, data values, or combinations thereof contained in rows, or columns, or combinations thereof, of the selection from the sender report; and placing the identified data fields, data values, or combinations thereof in a format for sending to the receiver report.
 8. A system comprising: memory; a computer processor coupled to the memory; instructions stored in the memory and executable by the processor, the instructions comprising: a sender report to display report results produced in accordance with the sender report and to receive a selection of some or all of the displayed report results; a sender adaptor to receive the selection from the sender report, and to extract a report-to-report selection criteria from the selection; a receiver adaptor to obtain the report-to-report selection criteria, to identify a target data table where information resides relating to the report-to-report selection criteria, and to create a selection criteria for the target data table from the report-to-report selection criteria; and a receiver report to receive the selection criteria for the target data table and to execute the selection criteria for the target data table.
 9. The system of claim 8, wherein the instructions further comprise a report-to-report adaptor to receive the report-to-report selection criteria and to provide the report-to-report selection criteria to the receiver adaptor.
 10. The system of claim 9, wherein the report-to-report adaptor is further configured to store the report-to-report selection criteria.
 11. The system of claim 8, wherein the receiver adaptor is further configured: to identify multiple target data tables where information relating to the report-to-report selection criteria resides; and to create database operations to join the multiple target data tables.
 12. The system of claim 11, wherein the selection criteria operates on joined multiple target data tables.
 13. The system of claim 8, wherein the sender report is further configured to extract displayed information from a sender data table and wherein the sender data table and the target data table reside in different databases.
 14. The system of claim 8, wherein the selection comprises multiple displayed information and wherein the report-to-report selection criteria includes criteria for the multiple displayed information.
 15. A non-transitory machine-readable storage medium comprising instructions that, when executed by at least one processor of a machine, perform operations comprising: receive a selection of information from a report generated from a first data table and displayed on a display device of the machine; create a selection criteria based on the selection; send the selection criteria to a generic report, the generic report adapted to select information from any data table where data relevant to the selection criteria reside; and select information based on the selection criteria.
 16. The non-transitory machine-readable storage medium of claim 15, wherein the data relevant to the selection criteria reside in data table in a database separate from a database where the first data table resides.
 17. The non-transitory machine-readable storage medium of claim 15, wherein the selection comprises a plurality of information and wherein the selection criteria selects data from multiple additional data tables.
 18. The non-transitory machine-readable storage medium of claim 17, wherein the multiple additional data tables reside in a database separate from the first data table.
 19. The non-transitory machine-readable storage medium of claim 17, wherein the instructions further configure the machine to create database operations to join the multiple additional data tables before selecting information based on the selection criteria.
 20. The non-transitory machine-readable storage medium of claim 19, wherein the instructions further configure the machine to modify the selection criteria to extract information from the joined multiple additional data tables. 